#ifndef CPOINT3F_H
#define CPOINT3F_H

class CVector3f;
#include "math.h"
#include "cvector3f.h"

class CPoint3f
{
public:
    CPoint3f();
    CPoint3f(double, double, double);
    CPoint3f(const CPoint3f &);
    CPoint3f(const CVector3f &);

    void            Add(CPoint3f *);
    void            Add(CPoint3f);

    double          Distance(CPoint3f *);
    double          Distance(CPoint3f);

    double          Distance2(CPoint3f *);
    double          Distance2(CPoint3f);

    void            operator=(CPoint3f);
    CPoint3f        crossProduct(CPoint3f);
    void            normalize();

    void            Div(double);
    void            Mult(double);

    double          GetX();
    double          GetY();
    double          GetZ();

    void            SetX (double);
    void            SetY (double);
    void            SetZ (double);
    void            Set (double, double, double);

    bool            operator==(CPoint3f);
    bool            operator!=(CPoint3f);
    void            operator+=(CPoint3f);
    void            operator-=(CPoint3f);

    CPoint3f		operator+(CVector3f);
    CPoint3f		operator-(CVector3f);

    CVector3f       operator-(CPoint3f);

protected:
    double          m_fX;
    double          m_fY;
    double          m_fZ;
};

#endif // CPOINT3F_H
